<%@page import="com.vviton.zyhj.common.entity.TYyxtHzglJsjlb" session="false" %>
<%@page import="com.vviton.zyhj.common.entity.TYyxtHzglHzgxb"%>
<%@page import="com.vviton.zyhj.common.utils.alipay.AlipayNotify"%>

<%@page import="java.util.Map.Entry"%>

<%@page import="com.vviton.zyhj.common.content.SpringContext"%>
<%@page import="com.vviton.zyhj.common.common.CodeConstants"%>
<%@page import="com.vviton.zyhj.admin.service.ZjzfxxPtService"%>
<%@page import="com.vviton.zyhj.common.view.ParamZjzfxx"%>
<%@page import="com.vviton.zyhj.admin.service.QzjyjsService"%>
<%
/* *
 功能：支付宝服务器异步通知页面
 版本：3.3
 日期：2012-08-17
 说明：
 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。

 //***********页面功能说明***********
 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 该页面调试工具请使用写文本函数logResult，该函数在com.alipay.util文件夹的AlipayNotify.java类文件中
 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 //********************************
 * */
%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*"%>
<%
	//获取支付宝POST过来反馈信息
	Map<String,String> params = new HashMap<String,String>();
	Map requestParams = request.getParameterMap();
	for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
		String name = (String) iter.next();
		String[] values = (String[]) requestParams.get(name);
		String valueStr = "";
		for (int i = 0; i < values.length; i++) {
			valueStr = (i == values.length - 1) ? valueStr + values[i]
					: valueStr + values[i] + ",";
		}
		//乱码解决，这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
		//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
		params.put(name, valueStr);
	}
	if(AlipayNotify.verify(params)){//验证成功
		//////////////////////////////////////////////////////////////////////////////////////////
		//请在这里加上商户的业务逻辑程序代码

		//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
		
	    ZjzfxxPtService zjzfxxPtService = SpringContext.getBean(ZjzfxxPtService.class);
	    QzjyjsService qzjyjsService = SpringContext.getBean(QzjyjsService.class);
		//PlfkdddygxService plfkdddygxService = SpringContext.getBean(PlfkdddygxService.class);
		// 交易批次号
		String batch_no = request.getParameter("batch_no");
		
		// 转账成功的详细信息
		String success_details = request.getParameter("success_details");
		// 转账失败的详细信息
		String fail_details = request.getParameter("fail_details");
		
		//编号
		String id = null;
		//从会话取得会员信息
		//SessionYWRY ywry = CommonConstants.getSessionYWRY(request);
		
		// 平台登录账号
		String zh = "青岛伟东云教育发展有限公司";
		/* if(ywry!=null){
			if(ywry.getZh()!=null&&ywry.getZh().length()>0){
				zh = ywry.getZh();
			}
		} */
		
		//Map<String, List<TYyxtJyglPlfkdddygx>> successInfo = new HashMap<String, List<TYyxtJyglPlfkdddygx>>();
		//Map<String, List<TYyxtJyglPlfkdddygx>> failInfo = new HashMap<String, List<TYyxtJyglPlfkdddygx>>();
		/** 支付成功 **/
		//List<ParamZjzfxx> plfkxxs = new ArrayList<ParamZjzfxx>();
		
		if(success_details!=null){
			String[] skttxx = success_details.split("\\|");
			if(skttxx!=null&&skttxx.length>0){
				for(String skkt:skttxx){
					/*
					 * 截取支付宝返回信息
					 * 0-流水号（支付宝订单编号）
					 * 1-收款方账号
					 * 2-收款账号姓名
					 * 3-付款金额
					 * 4-成功标识(S)
					 * 5-成功原因(null)
					 * 6-支付宝内部流水号
					 * 7-完成时间（yyyyMMddHHmmss）
					 */
					String[] skxx = skkt.split("\\^");
					if(skxx!=null&&skxx.length>0){
					    id = skxx[0];
					    //获取课堂账号和业务域
					    TYyxtHzglJsjlb jsjlb = zjzfxxPtService.getJsjlbByZfbddbh(id);
					    ParamZjzfxx paramZjzfxx = new ParamZjzfxx();
					   
					    //获取课堂id
					    TYyxtHzglHzgxb hzfbxb = qzjyjsService.getHzgxbxx(jsjlb.getJsfzh(), jsjlb.getYwy());
					    
						paramZjzfxx.setKtid(hzfbxb.getHzfid());
						paramZjzfxx.setZh(zh);
						paramZjzfxx.setZfje(skxx[3]);
						paramZjzfxx.setZjjssj(skxx[7]);
						paramZjzfxx.setSkfzh(skxx[1]);
						paramZjzfxx.setSkfxm(skxx[2]);
						paramZjzfxx.setZfjyh(skxx[6]);
						// 资金支付信息（平台）
						//zjzfxxPtService.insertZjzfxxPt(paramZjzfxx);
						 
						//结算记录
						paramZjzfxx.setFlag(CodeConstants.JSZT_YJS);
						paramZjzfxx.setZfbddbh(jsjlb.getZfbddbh());//支付宝订单编号 
						paramZjzfxx.setJsfzh(jsjlb.getJsfzh());//结算方账号
						//结算记录表更新
						zjzfxxPtService.updateJsjlb(paramZjzfxx);
					}
					
				}
			}
		}
		
		/** 支付失败 **/
		if(fail_details!=null){
			String[] skttxx = fail_details.split("\\|");
			if(skttxx!=null&&skttxx.length>0){
				for(String skkt:skttxx){
					/*
					 * 截取支付宝返回信息
					 * 0-流水号（课堂编号KTID）
					 * 1-收款方账号
					 * 2-收款账号姓名
					 * 3-付款金额
					 * 4-成功标识(S)
					 * 5-成功原因(null)
					 * 6-支付宝内部流水号
					 * 7-完成时间（yyyyMMddHHmmss）
					 */
					String[] skxx = skkt.split("\\^");
					if(skxx!=null&&skxx.length>0){
					    id = skxx[0];
					    //获取课堂账号和业务域
					    TYyxtHzglJsjlb jsjlb = zjzfxxPtService.getJsjlbByZfbddbh(id);
						ParamZjzfxx paramJssb = new ParamZjzfxx();
						paramJssb.setZh(zh);
						paramJssb.setZfje(skxx[3]);
						paramJssb.setZjjssj(skxx[7]);
						paramJssb.setZfjyh(skxx[6]);
						//失败
						paramJssb.setFlag(CodeConstants.JSZT_SB);
						paramJssb.setZfbddbh(jsjlb.getZfbddbh());//支付宝订单编号
						paramJssb.setJsfzh(jsjlb.getJsfzh());//结算方账号
						//结算记录表更新
						zjzfxxPtService.updateJsjlb(paramJssb);
					}
					
				}
			}
		}
		
		out.println("success");	//请不要修改或删除

		//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

		//////////////////////////////////////////////////////////////////////////////////////////
	}else{//验证失败
		 out.println("fail");
	}
	
		
%>
